// store中的state必须要暴露出去，state表单存放数据的对象（state属性名是固定）
export const state = () => ({

    userInfo: {
      token: '',
      user: {}
    }
  
  
})
// 保存用户信息到state    同步
export const mutations = {
  // getUserInfo是用来修改state.userInfo的值，函数名可以修改的
  // 参数state是必须要添加的，可以通过state修改数据
  setUserInfo(state, data) {
    state.userInfo = data
  },
  //   cleanUserInfo(state,info){
  //       if(process.browser){

  //       }
  //   }
};

// 异步
export const actions = {
  // actions的函数第一个参数是store对象,store这个参数是必须的，
  // 第二个参数是传入的参数
  login(store, data) {
    // validate是elementui的form表单的方法，提供一个回调函数校验表单是否通过验证
    // valid如果值true的话就表示通过

    return this.$axios({
      url: "/accounts/login",
      method: "post",
      data
    }).then(res => {
      console.log(res.data);

      // 调用mutations下的方法修改userInfo,调用时候传入res.data
      // store.commit("user/setUserInfo", res.data);

      // 调用当前模块下的mutations是不需要加上模块名字的
      store.commit('setUserInfo', res.data)

    });

  },
  // 发送手机验证码
  sendCaptcha(store,tel){
    return this.$axios({
      url:'/captchas',
      method:'post',
      data:{
          tel,
      }
  }).then(res=>{
      const {code} = res.data;
      // 返回验证码
     return code;
  })
  },
  // 注册
  register(store,data){
    return this.$axios({
      url:'/accounts/register',
      method:'post',
      data
    }).then(res=>{ 
      store.commit('setUserInfo',res.data)
    })
  }


}
